package lxj;


import java.util.*;


/*java.lang
接口 Comparable<T>
类型参数：
T - 可以与此对象进行比较的那些对象的类型
*/
public class User implements Comparable<User>{

        private int score;

        private int age;

        public User(int score, int age){
            super();
            this.score = score;
            this.age = age;
        }

        public int getScore() {
            return score;
        }

        public void setScore(int score) {
            this.score = score;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

   /* @Override
    public int compareTo(User o) {
        return 1;  //对于对象 有多个参数 直接返回一个值是不排序的,它不知道按照哪个排序
    }*/

         @Override
    public int compareTo(User o) {
               int i = o.getAge()-this.getAge() ;//先按照年龄排序
            if(i == 0){
                return this.score - o.getScore();//如果年龄相等了再用分数进行排序
            }
        return i;
    }

    public static void main(String[] args) {
        List<User> users = new ArrayList<User>();
        users.add(new User(78, 26));
        users.add(new User(67, 23));
        users.add(new User(34, 56));
        users.add(new User(55, 23));


        // public int compareTo(User o) {
        //        return 1;
        //    }
        //    对于对象 有多个参数 直接返回一个值是不排序的,它不知道按照哪个排序


        //如果即集合中的对象实现了Comparable接口    又自定义了集合的元素排序规则   后者生效
        Collections.sort(users, new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                return o1.getAge()-o2.getAge() ;   //按年龄升序
            }
        });
        for(User user : users){
            System.out.println(user.getScore() + "," + user.getAge());
        }
    }

}
